function get_count_checked (){
	return $("input[name=msg_group]:checked").length;
}
	
function do_msg_group(post_uri, re_uri) {
	//if (get_count_checked() == 0)
	//	return false;
	
	$.post(post_uri, $('#msg_group').serialize(), function(data){
		if (data != null && data.err_code == 0){
			if (re_uri)
				window.location.assign(re_uri);
			else
				window.location.reload(true);
			return;
		}
		
		alert('сбой работы сервера, попробуйте повторить позднее...');
	}, "json");
	
	return false;
}

function do_trash_all() {
	if ($(this).hasClass('b-messages__buttons__button_inactive'))
		return false;
	
	var folder_title = $('#folders li.subnav-on').text();
	
	if (! folder_title)
		return false;
	
	if (confirm('Удалить все сообщения из папки "' + folder_title + '"?'))
		do_msg_group('/cgi-bin/iMail/trash_all/', '?' + Math.random());
	
	return false;
}

function do_trash() {
	return do_msg_group('/cgi-bin/iMail/trash/', $('#nav_next').attr('href'));
}

function do_restore() {
	return do_msg_group('/cgi-bin/iMail/restore/', $('#nav_next').attr('href'));
}

function do_read() {
	return do_msg_group('/cgi-bin/iMail/read/', $('#nav_next').attr('href'));
}

function do_spam() {
	return do_msg_group('/cgi-bin/iMail/spam/', $('#nav_next').attr('href'));
}

function do_not_spam() {
	return do_msg_group('/cgi-bin/iMail/not_spam/', $('#nav_next').attr('href'));
}

function do_spam_ack() {
	return do_msg_group('/cgi-bin/iMail/spam_ack/', $('#nav_next').attr('href'));
}

function stub() {
	return false;
}

function __check_all(flag){
	$('input[name=msg_group]').attr('checked', flag);
}

function do_re() {
	if ($("input[name=msg_group]:checked").length > 1){
		alert('Отметьте, пожалуйста, только 1 письмо, на которое вы хотите ответить.');
		
		return false;
	}//end if
	
	var msg_id = $("input[name=msg_group]:checked:first").val();
	
	if (msg_id)
		window.location.assign('read_msg.html?msg_id=' + msg_id + '#re');
	
	return false;
}

function do_fwd() {
	if ($("input[name=msg_group]:checked").length > 1){
		alert('Отметьте, пожалуйста, только 1 письмо, которое вы хотите переслать.');
		
		return false;
	}//end if
	
	var msg_id = $("input[name=msg_group]:checked:first").val();
	
	if (msg_id)
		window.location.assign('read_msg.html?msg_id=' + msg_id + '#fwd');
	
	return false;
}

function do_fwd_spam() {
	var msg_id = $("input[name=msg_group]:checked:first").val();
	
	if (msg_id)
		window.location.assign('spam_view.html?msg_id=' + msg_id + '#fwd');
	
	return false;
}

function bind_checks(){
	var count = get_count_checked();
	
	if (count > 0){
		$('#check_all').addClass('b-messages__check_inactive').unbind().click(stub);
		$('#check_nothing').removeClass('b-messages__check_inactive').unbind().click(function(){
			$('#all_check').attr('checked', false);
			__check_all(false);
			bind_checks();
			return false;
		});
		$('#check_invert').removeClass('b-messages__check_inactive').unbind().click(function(){
			$('input[name=msg_group]').each(function(){
				$(this).attr('checked', ! $(this).attr('checked'));
			});
			
			if (get_count_checked() == 0){
				$('#all_check').attr('checked', false);
				
				bind_checks();
			}
			
			return false;
		});
		
		$('#btn_read').removeClass('b-messages__buttons__button_inactive').unbind().click(do_read);
		$('#btn_trash').removeClass('b-messages__buttons__button_inactive').unbind().click(do_trash);
		$('#btn_spam').removeClass('b-messages__buttons__button_inactive').unbind().click(do_spam);
		$('#btn_not_spam').removeClass('b-messages__buttons__button_inactive').unbind().click(do_not_spam);
		$('#btn_restore').removeClass('b-messages__buttons__button_inactive').unbind().click(do_restore);
		$('#btn_re').removeClass('b-messages__buttons__button_inactive').unbind().click(do_re);
		$('#btn_fwd').removeClass('b-messages__buttons__button_inactive').unbind().click(do_fwd);
		$('#btn_fwd_spam').removeClass('b-messages__buttons__button_inactive').unbind().click(do_fwd_spam);
		$('#btn_spam_ack').removeClass('b-messages__buttons__button_inactive').unbind().click(do_spam_ack);
	} else {
		$('#check_all').removeClass('b-messages__check_inactive').unbind().click(function(){
			$('#all_check').attr('checked', true);
			__check_all(true);
			bind_checks();
			return false;
		});
		$('#check_nothing').addClass('b-messages__check_inactive').unbind().click(stub);
		$('#check_invert').addClass('b-messages__check_inactive').unbind().click(stub);
		
		$('#btn_read').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_trash').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_spam').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_not_spam').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_restore').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_re').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_fwd').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_fwd_spam').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
		$('#btn_spam_ack').addClass('b-messages__buttons__button_inactive').unbind().click(stub);
	}//end if
}//end func

function scroll_to_begin(dom_id){
	var ta = document.getElementById(dom_id);
	
	if (ta.createTextRange){
		var r = ta.createTextRange();
		r.collapse(true);
		r.select();
	} else if (ta.selectionStart){
		ta.setSelectionRange(0,0);
 			ta.focus();
	}//end if
}//end func

$(document).ready(function(){
	$('#all_check').click(function (){
		var check = $(this).attr('checked');
		__check_all(check);
		
		bind_checks();
	});
	
	bind_checks();
	
	$('input[name=msg_group]').click(function(){
		var count = get_count_checked();
		
		if ($(this).attr('checked')){
			if (count == 1){
				$('#all_check').attr('checked', true);
				
				bind_checks();
			}//end if
		} else {
			if (count == 0){
				$('#all_check').attr('checked', false);
				
				bind_checks();
			}//end if
		}//end if
	});
	
	//single binds
	$('#trash_all').click(do_trash_all);
	$('#sbtn_trash').click(do_trash);
	$('#sbtn_spam').click(do_spam);
	$('#sbtn_not_spam').click(do_not_spam);
	$('#sbtn_restore').click(do_restore);
	
	$('#sbtn_spam_ack').click(do_spam_ack);
	
	$('button[name=cancel_send]').click(function(){
		if ($('#message').val() == '' && $('#subject').val() == '' && $('#to').val() == ''){
			window.location.assign('/cgi-bin/iMail/index.html');
			
			return false;
		}
		
		if (confirm('Текст письма будет утерян. Продолжить?')){
			window.location.assign('/cgi-bin/iMail/index.html');
			
			return false;
		}
		
		return false;
	});
	
	$('a[name=sbtn_fwd]').click(function(){
		var body     = $('div.b-message__data').text();
		var subject  = $('div.b-message__subject').text();
		var txt_from = $('#txt_from').text();
		var txt_to   = $('#txt_to').text();
		var txt_date = $('#txt_date').text();
		
		var body_re  = body.replace(/^\s+/g, '').replace( /\s+$/g, '').replace(/^(.*)$/gm, "  $1");
		
		$('#message').val(
			$('#message').val()
			+ "\n\n\n-------- Пересылаемое сообщение --------"
			+ "\nОт кого: " + txt_from
			+ "\nКому: "    + txt_to
			+ "\nДата: "    + txt_date
			+ "\nТема: "    + subject
			+ "\n\n"        + body_re
		);

		var re_match = subject.match(/^Fwd(?:\[(\d+)\])?:\s?(.*)/);
		
		var fwd = 'Fwd';
		if (re_match){
			fwd_num = re_match[1] ? ++re_match[1] : 2;
			subject = re_match[2];
			
			fwd += '[' + fwd_num + ']';
		}//end if
		
		$('#subject').val(fwd + ": " + subject);
		
		$('#parent_reply_id').val('');
		$('#forward_id').val('1');
		
		window.location.hash = '#fwd';
		scroll_to_begin('message');
		
		return false;
	});
	
	if (window.location.hash == '#fwd')
		$('a[name=sbtn_fwd]:first').click();
	
	$('a[name=sbtn_re]').click(function(){
		var body     = $('div.b-message__data').text();
		var subject  = $('div.b-message__subject').text();
		var txt_from = $('#txt_from').text();
		var txt_to   = $('#txt_to').text();
		var txt_date = $('#txt_date').text();
		
		var body_re  = body.replace(/^\s+/g, '').replace( /\s+$/g, '').replace(/^(.*)$/gm, "> $1");
		
		$('#message').val(
			$('#message').val()
			+ "\n\n\n"    + txt_date
			+ " от: " + txt_from
			+ ":\n"   + body_re
		);
		
		var re_match = subject.match(/^Re(?:\[(\d+)\])?:\s?(.*)/);
		
		var re = 'Re';
		if (re_match){
			re_num  = re_match[1] ? ++re_match[1] : 2;
			subject = re_match[2];
			
			re += '[' + re_num + ']';
		}//end if
		
		$('#subject').val(re + ": " + subject);
		$('#to').val(txt_from);
		
		$('#parent_reply_id').val('1');
		$('#forward_id').val('');
		
		window.location.hash = '#re';
		scroll_to_begin('message');
		
		return false;
	});
	
	if (window.location.hash == '#re')
		$('a[name=sbtn_re]:first').click();
	
	$('tr.b-message-list__field').each(function(){
		var item    = $(this);
		var item_id = this.id.substr(9);
		
		item.find("a[name=spam_ack]").click(function (){
			var href = $(this);
			
			$.post('/cgi-bin/iMail/spam_ack/', {'msg_group': item_id}, function(data){
				if (data != null && data.err_code == 0){
					href.remove();
					return;
				}
		
				alert('сбой работы сервера, попробуйте повторить позднее...');
			}, "json");
			
			return false;
		});
	});
	
	$('button[name=cancel_ban]').click(function(){
		window.location.assign('/cgi-bin/iMail/spam_list.html');
		
		return false;
	});
	
	//autocomplete
	function formatItem(row) {
		return row[0] + " (<strong>id: " + row[1] + "</strong>)";
	}
	
	function formatResult(row) {
		return row[0].replace(/(<.+?>)/gi, '');
	}
	
	$("#to").autocomplete('/cgi-bin/iMail/address/', {
		width: 320,
		max: 30,
		minChars: 2,
		highlight: false,
		multiple: true,
		multipleSeparator: ", ",
		matchContains: "word",
		autoFill: false,
		scroll: true,
		scrollHeight: 200
	});
	
	$("th[name=sort]").click(function(){
		var mode = $(this).attr('value');
		
		window.location.assign('?sort=' + mode);
		
		return false;
	});
	
	//при фокусе делаем цитирование
	$('#message, #to, #subject').focus(function(event){
		$(this).unbind(event);
		
		if ($(this).val().length == 0)
			$('a[name=sbtn_re]').click();
	});
});
